package com.bird.设计模式.结构型.装饰者模式.v2;

/**
 * @data 2022/3/14 18:05
 * @author: bird
 * @description: 验证 装饰者的模式的优越性
 */
public class Test {

    public static void main(String[] args) {
        AbstractBatteryCake abstractBatteryCake;
        abstractBatteryCake = new BatteryCake();// 创建煎饼实体类
        abstractBatteryCake = new EggDecorator(abstractBatteryCake);// 给这个煎饼添加一个鸡蛋
        abstractBatteryCake = new EggDecorator(abstractBatteryCake);//给这个煎饼添再加一个鸡蛋
        abstractBatteryCake=new SausageDecorator(abstractBatteryCake);// 给这个煎饼加个香肠
        System.out.println(abstractBatteryCake.getDesc()+" 销售价格："+ abstractBatteryCake.cost());
    }
}


/*
* 总结：
*  1：装饰者模式可以动态的给对象添加功能。
*  2：使用装饰者模式的四要素 要有一个抽象的实体类, 还要有一个确定的实体类，同时要有一个抽象的装饰者 还要有一个确定的装饰者。
*  3: 使用装饰者要明确两个东西 第一,被装饰的实体(煎饼) 第二,装饰者(鸡蛋,香肠之类)。
* */
